Originally, computer networks consisted of direct links between computers. When computer A wanted to talk to computer B, there was a direct physical link connecting the two machines. Measuring the bandwidth along the connection was easy: as the source computer sent out data packets, the destination computer could receive the data packets and measure the time delay between the data packets, establishing the bandwidth.
ARPA (the Advanced Research Projects Agency) began the research and development that led to the Internet of today. Instead of having each computer able to talk directly with every other computer, each computer connected to only certain other computers. To send a message to a computer that is not directly linked to a source computer, the source computer sends the message to a neighbor, and asks the neighbor to route the message. The neighbor looks at the destination of the message, and does its best to route the message to the recipient.
FIG. 1 illustrates this scenario. In FIG. 1, various devices are connected via a network. For example, server 105, personal computer 110, cellular telephone 115, and personal digital assistant (PDA) 120 are all connected to network 125. Network 125 may include any number of computers, interconnected in any configuration, thereby allowing server 105, personal computer 110, cellular telephone 115, and PDA 120 to access network 125 from different points.
FIG. 2 shows paths across the network of FIG. 1, connecting different devices. For example, path 205 connects server 105 and personal computer 110, and includes nodes 210, 215, 220, 225, 230, and 235. In contrast, another path through network 145 (connecting other devices) might be path 240, including nodes 245, 225, 250, and 255.
To measure bandwidth, one computer (such as server 105) sends out data packets, which are received by the second computer (such as personal computer 110). The second computer measures the bandwidth of the network by diving the number of bits transmitted by the difference in arrival times of the first and last packet. Arithmetically, the formula is:   BW  =            NumBits                        T          2                -                  T          1                      .  
But notice that node 225 is on both of paths 205 and 240. This introduces a complication not present when computers are directly connected. Now, node 225 has to route packets along both paths. Since it may only consider one packet at a time, it might take a message longer to travel on one path that it would if node 225 were only on the path connecting server 105 and personal computer 110. This delay is not a permanent limitation on the network's ability to transfer data, but rather a short-term limitation of one node along the path.
FIG. 3 illustrates this situation. In FIG. 3, packets 305 are shown entering node 225. Node 225 processes the packets in the order in which they were received. This means that some packets will be directed to node 240, others to node 230, and others to node 250 (and perhaps other packets directed to other nodes not shown in network 125). While node 225 is processing packets along path 240, it may not process packets along path 205, resulting in a delay. If the destination computer measures the delay between packets, a delay augmented by a busy node in the network, the calculated estimate for the network bandwidth is lower than the actual network bandwidth.
Another problem may arise when the first packet is queued but the last packet is not. By “squeezing” the packets closer together, the computed network bandwidth is higher than the actual network bandwidth.
To account for delay and squeezing, one approach previously taken is to use packet trains. Packet trains are simply groups of packets, typically numbering between 2 and 30. A person skilled in the art will recognize that packet trains with higher number of packets suffer from increased queueing delay relative to packet trains with smaller numbers of packets, as there are more packets that may be potentially queued. Similarly, packet trains using larger packet sizes suffer from increased queueing delay relative to packet trains using small packet sizes, as the larger packets take longer to transmit. Using packet trains allows for an estimation of bandwidth that accounts for average network queueing delay. But it does not measure the true bandwidth of the network.
A need remains for a way to measure network bandwidth that addresses these and other problems associated with the prior art.